import java.util.Stack;
/**
 * @author : zzr
 * @description :
 * @date :
 */
public class Test6 {
    class MinStack {
        private Stack<Integer> stack;
        private Stack<Integer> minStack;

        public MinStack() {
            stack = new Stack<>();
            minStack = new Stack<>();
        }

        public void push(int val) {
            stack.push(val);
            if(minStack.isEmpty()) {
                minStack.push(val);
            } else {
                if(val <= minStack.peek()) {
                    minStack.push(val);
                }
            }
        }

        public void pop() {
            int ret = stack.pop();
            if (minStack.peek() == ret) {
                minStack.pop();
            }
        }

        public int top() {
            if (stack.isEmpty()) {
                return -1;
            }
            return stack.peek();
        }

        public int getMin() {
            if (minStack.isEmpty()) {
                return -1;
            }
            return minStack.peek();
        }
    }

}
